// 导入依赖
var express = require("express");
var cors = require("cors");
var bodyParser = require("body-parser");

// 处理文件的读写
var fs = require("fs");

// 处理文件路径
var path = require("path");

// 编写函数读取en.json文件
function readFile(url){
    //读取文件中的文本
    var text = fs.readFileSync(url,'utf-8');
    // 把文本转对象并返回
    return JSON.parse(text);
}

// 获取词汇数据数据
var filepath = path.join(__dirname,"public","data","english.json");
// var filepath = path.resolve(__dirname,"public/data/en.json");
var arr = readFile(filepath)
// console.log(arr);

// 创建后台程序
var app = express();

// 端口
var PORT = 7000;
app.listen(PORT, function(){
    console.log("HTTP服务正常运行...");
    // http://127.0.0.1:7000
    // http://localhost:7000
    // http://192.168.x.xxx:7000
})

// 静态资源目录
app.use(express.static("public"));

// 设置CORS
app.use(cors());

// 解析 application/x-www-form-urlencoded 文档格式
app.use(bodyParser.urlencoded());
// 解析 application/json 文档格式
app.use(bodyParser.json());


// 测试一下
// http://127.0.0.1:7000/
app.get('/',function(req,res){
    res.send("<h1>后台程序正常运行中...</h1>")
})

// 接口一： 获取词汇列表
app.get("/words",function(req,res){
    // 接收前端传递的参数
    var page = (req.query.page  || 0) - 0;// 转number类型
    var size = (req.query.size  || 5) - 0;
    // arr.slice(开始索引，结束索引)
    var startIndex = page * size;
    var endIndex = startIndex + size;
    // 从数组中获取指定数量的词汇
    var result = arr.slice(startIndex,endIndex);

    // 把处理结果返回给前端
    res.send({
        msg:"这是词汇列表",
        total: arr.length, 
        result: result
    })
})

// 接口二：获取单词的详情
app.get("/detail",function(req,res){
    // 接收前端提交的参数
    var word = req.query.word;
    // 定义对象
    var obj;
    // 循环arr数组
    for(var i = 0 ;i < arr.length ; i ++){
        if(arr[i].word == word){
            obj = arr[i];
            break;
        }
    }
    // 循环结束
    res.send({
        msg: "这是单词的详情",
        result: obj 
    })
})


// 接口三：搜索单词
app.get("/search",function(req,res){
    // 接收前端提交的参数
    var kw = req.query.kw;
    // 定义对象
    var newArr =[];
    // 循环arr数组
    for(var i = 0 ;i < arr.length ; i ++){
        if(arr[i].word.includes(kw)){
           // 往新数组添加符合条件的数据
           newArr.push(arr[i]);
        }
    }
    // 循环结束
    res.send({
        msg: "这是搜索的结果",
        result: newArr 
    })
})


// 接口四: 登录接口
var user = {
    acc: "admin",
    pwd: "123456",
    id:"xxx",
    nickName:"张三"
}

app.post("/login", function(req,res){
    // 接收参数
    var account = req.body.account;
    var password = req.body.password;
    // 判断账号密码是否正确
    if(user.acc == account && user.pwd == password){
        res.send({
            msg:"登录成功",
            nickName: user.nickName,
            id: user.id 
        })
    }
    else {
        res.send({
            msg:"登录失败"
        })
    }
})